El método de Newton

Recordemos que el método de Newton es un método numérico iterativo para encontrar raíces de funciones (continuamente) diferenciables.

Sea $f$ la función cuyas raíces queremos encontrar. La idea es que empecemos desde una adivinanza inicial $x_0$, y que la siguiente aproximación $x_1$ esté donde la recta tangente a la curva $f(x)$ en $x_0$ corte el eje $x$.

[1] Esboza la geometría, tanto a mano como en la computadora, y así encuentra la expresión de $x_{n+1}$ en términos de $x_n$.

[2] Implementa la iteración para calcular la raíz cuadrada y la raíz cúbica de $2$. ¿Cuál es una condición razonable de terminación del algoritmo?

[3] Haz un módulo para llevar a cabo diferenciación automática (usando el código del notebook correspondiente) y utilízalo para implementar el método.

El método de Newton puede fallar:

[4] Utiliza el mismo método para la función compleja $f(z) = z^3 - 1$. Empezando desde distintos números complejos $a + bi$, itera el algoritmo para ver a cuál raíz converge, y colorea el punto inicial de manera correspondiente. [Para esto, se recomienda construir una matriz y utilizar la función pcolor de PyPlot.]

Interpreta el resultado.

Dimensión superior

[5] Desarrolla e implementa el método de Newton para funciones $\mathbf{f}: \mathbb{R}^n \to \mathbb{R}^n$. Para hacerlo, toma una adivinaza $\mathbf{x}_n$ y resuelve la ecuación $\mathbf{f}(\mathbf{x}_{n+1}) = \mathbf{0}$, con $\mathbf{x}_{n+1} = \mathbf{x}_n + \delta \mathbf{x}_n$.

[6] Utiliza tu algoritmo para calcular raíces de funciones conocidas multidimensionales.